package org.zjx.core;

import java.net.InetSocketAddress;
import java.util.Set;

/**
 * 集群配置接口
 */
public interface ClusterConfig {
    /**
     * 获取集群中所有从服务器的地址
     */
    Set<InetSocketAddress> getSlaveNodes();

    /**
     * 获取命令到服务器的映射关系
     * @param command 命令名称
     * @return 应该处理该命令的服务器地址，null表示本地处理
     */
    InetSocketAddress getNodeForCommand(String command);

    /**
     * 获取主服务器地址
     */
    InetSocketAddress getMasterAddress();

    /**
     * 添加命令到服务器的映射
     */
    void addCommandMapping(String command, InetSocketAddress node);

    /**
     * 移除命令映射
     */
    void removeCommandMapping(String command);
}